Awatar
Join the discussion…


  • w tej rozmowie
        Symbol zastępczy podglądu mediów
        Zaloguj się za pomocą
        albo zarejestruj w Disqus lub wybierz nazwę

        Disqus to społeczność dyskusyjna

        • Disqus nigdy nie moderuje komentarzy. Zasady są własnością portalu.
        • Twój e-mail jest bezpieczny. Służy wyłącznie do moderacji i ewentualnych powiadomień.
        • Nie bądź nieprzyjemny, nie łam prawa. W ten sposób wszystkim będzie łatwiej.

        Przeczytaj pełne warunki umowy

        • Witam serdecznie wszystkich.
          Przede wszystkim to wspaniały artykuł jak chodzi o zagadnienie nftables. Wielkie podziękowania za tyle dobrej roboty.
          nftables zajmuję się od wersji 0.2 co tu można o tym powiedzieć na pewno jest to dużo lepsze od iptables, składnia znaczenie inna co przyznam rację BloodMan. Moje pytanie do Autora tego artykułu gdzie jest dostępna dokumentacja do nftables, wiem że jest kilka naście stron opisujących nftables, ale według mnie to naprawdę tylko opisują tu niektóre możliwość.Aktualnie jestem w trakcie pisania firewall opartym o nftables, borykam się jeszcze z wieloma sprawami które mam na iptables połączonych z ipset, ale powoli idzie do przodu prace na firewall (nftables). Gdyby ktoś chciał się podzielić i wymienić informacjami na temat nftables to zapraszam, kontakt jest na mojej stronie www.linuxbox.pl.

          Pozdrawiam LinuxBox.

          • Awatar

            Rozumiem, że na dzień dzisiejszy (maj 2016) nftables jest ciągle w fazie rozwojowej i nie jest wdrożony w żadnej liczącej się dystrybucji?

              • Witam czy jest możliwość wykonania na nftables nat 1:1 ale na zasadzie add, del element aby uniknąć dodatkowych reguł
                nftables tak działa

                nft add table nat
                nft add chain nat output { type nat hook output priority 0 \; }
                nft add chain nat input { type nat hook input priority 0 \; }
                nft add rule nat output ip daddr 1.1.1.1 dnat 192.168.0.1
                nft add rule nat output ip daddr 2.2.2.2 dnat 8.8.8.8

                sprawdzone ale chciałem na zasadzie elementów

                próbuje tak

                nft add map nat fakes { type ipv4_addr : ipv4_addr \; }
                nft add element nat fakes { 1.1.1.1 : 192.168.0.1 }
                nft add element nat fakes { 2.2.2.2 : 8.8.8.8 }

                mapa działa ale nie idzie dodać wtedy tej mapy do rule nftables

                Pytanie moje czy istnieje taka funkcjonalność

                Pozdrawiam LinuxBox

                  • Dziękuje za linki kilka z nich mam kilka nowych doszło więc jeszcze raz dziękuje.

                    Napiszę tu najbardziej używaną funkcję w iptables lub iptables połączone z ipset czyli tak potoczenie nazwane Access List dla wersji nftables może komuś się przyda.

                    Dodajemy nową mapę:
                    nft add map filter LBox-ACCESS { type ether_addr . ipv4_addr : verdict \; }

                    Teraz tą mapę możemy podłączyć po tablicę filter, mangle, nat przykład dodania mapy do tabeli filter:

                    nft add rule filter LBox-INPUT ether saddr . ip saddr vmap @LBox-ACCESS

                    A teraz już sobie dodajemy elementy do mapy decyzja verdict w tym przypadku access lub drop

                    nft add element filter LBox-ACCESS { 00:11:22:33:00:11 . 10.20.20.2 : accept } # Dostęp dozwolony z adresu IP + MAC
                    nft add element filter LBox-ACCESS { 33:22:11:00:11:00 . 20.10.10.3 : drop } # Odmowa dostępu z adresu IP + MAC

                    i w ten sposób mamy bardzo szybko za pomocą nftables uzyskaną autoryzację IP + MAC, a teraz zaglądając na składnię
                    iptables lub iptables + ipset ta może wydać się trochę dziwna, ale wystarczy z 2 dni treningu i według mnie idzie iptables,
                    ipset odłożyć dla potomnych.

                    Pozdrawiam Grzegorz (LinuxBox)

                      • Zastanawiam się nad kilkoma sprawami:
                        1. Albo jestem już za stary, albo programowanie firewalla nftables wygląda kosmicznie - natomiast znalezienie błędu będzie proste jak szukanie życia w układzie słonecznym.
                        2. Komu to potrzebne? Tzn. nie chce być jakoś specjalnie niewdzięczny, ale to jest jakiś chory przerost złożoności formy programowania firewalla nad treścią tego co chcemy uzyskać. Żeby nie było że nie rozumiem zalet - ale jaki promil adminów potrzebuje tych możliwości?
                        3. Jest jeden plus - byle "gimbus" tego nie zaprogramuje (poprawnie). Chyba...

                          • ad 1. To kwestia przyzwyczajenia. W systemach typu BSD jest bardzo podobna składnia jak w nftables. Jest ona bardziej zwięzła i ekspresywna – w jednej linii można zapisać to, co w iptables w kilku.

                            Znalezienie błędu w regułach i obserwowanie przepływu jest możliwe przez zakładanie liczników na reguły, przez dołączanie logowania ulog2 do reguł, albo przez zastosowanie przykładowego narzędzia testującego w userspace (też trzeba dodać do reguł odpowiednie akcje):

                            http://wiki.nftables.org/wiki-...

                            Niezależnie od rodzaju firewalla można też zastosować narzędzie typu Scapy:

                            http://www.secdev.org/projects...

                            I ustawiać jakieś nietypowe pole pakietu, a w łańcuchach już mieć poustawiane np. logowania pakietów z tym polem.

                            Jest też, wspomniana w artykule, deklaracja decyzyjna meta nftrace, która uruchamia śledzenie ścieżki pakietu o podanych kryteriach w całym stosie nf_tables. Przypomina to cel TRACE znany z iptables i polega na ustawieniu odpowiedniej flagi dla pasującego pakietu. Można taką flagę ustawić z niskim priorytetem w łańcuchu podpiętym do wejścia interfejsu (ale może już po defragmentacji pakietów, czyli prio -300), i oznaczać pakiety, które chcemy śledzić. Więcej o tej akcji:

                            http://wiki.nftables.org/wiki-...

                            ad 2. Najważniejszą zaletą jest generyczne podejście do filtrowania, tzn. w kernelu jest niskopoziomowy filtr, a wszelkie specyficzne dla protokołów cuda robione są w oprogramowaniu, które kompiluje pseudokod i stworzone filtry wysyła do modułu jądra.

                            W przypadku filtrów, które są zbyt specyficzne (np. iptables) z biegiem czasu pojawia się problem z utrzymywaniem dużej bazy specyficznych modułów obsługi. Przykład: korzystamy z dodatkowych komunikatów ICMP wysyłanych do nadawcy, gdy pakiet ma być odrzucony (reject), których obsługę zapewnia moduł. Po aktualizacji kernela i drobnej zmianie ścieżki przepływu w podsystemie Netfilter, moduł przestaje działać, bo jego maintainter dostał ostatnio nową pracę i nie ma czasu się zająć uaktualnieniem.

                            Druga ważna sprawa to utrzymywanie stałych struktur. Im więcej protokołów i punktów Netfiltera ma być obsługiwanych, tym więcej operacji lookup, które poszukują reguł w miejscach, w których powinny się znaleźć, gdyby tam były. W przypadku maszyny wirtualnej podejście jest trochę inne, bo realizowane są tylko te filtry, które naprawdę wprowadzono. To oznacza w procku mniej operacji JMP dla każdego pakietu, który się pojawia.

                              zobacz więcej
                              • Ad 1. Jeśli chodzi o BSD to racja, z tym że nftables są jeszcze o rząd bardziej "pokręcone". Chociaż widzę także podobieństwa nftables do iproute2. Oczywiście będzie trzeba się pochylić nad tym - tak jak dawniej z przejściem ipchains>iptables...

                                Ad 2. Być może nie rozumiem wszystkich zalet (widzę dwie: wydajność i uproszczenia na poziomie jądra), ponieważ nie używam Linuxa jako desktopa. Ale serio: jest aż tak źle z iptables że trzeba wszystko wywrócić do góry nogami i zacząć od nowa?

                                PS. mile jestem zaskoczony za tak rozbudowaną odpowiedź - dzięki
                                PS2. co się dzieje z tym światem... https://netfilter.org - oni tak generycznie mają all in ass z tym certem? ;d

                                  • Wśród programistów stosu TCP/IP kernela Linux są takie dwa klany. Pierwszy to starzy wyjadacze, którzy bawią się czasem w utrzymywanie tego, co zrobił Kuzniecow (iproute2). On chciał, żeby to było podobne do systemu IOS z Cisco i dlatego mamy w poleceniu ip taką specyficzną składnię. Druga grupa to ludzie od ipchains/iptables i częściowo od Netfiltera. Problem zaczął się już dawno, gdy iproute2 został wyposażony w podsystem bezstanowej translacji adresów (NAT), kontrolę pasma (TC) i wydajny klasyfikator u32. To wszystko jak na tamte czasy (rok 2001 i kilka lat później) było naprawdę dobrą podstawą do zrobienia porządnego firewalla.

                                    Problem polegał na tym, że najpierw nie było dobrej dokumentacji do tego wszystkiego, więc ludzie nie używali, a potem dokumentacja zaczęła się pojawiać, ale robienie reguł klasyfikatorem u32 było i jest po prostu zbyt ciężkie (niewielu ludzi na świecie ma to dobrze opanowane). No więc grupa sieciowych geniuszy popełniła coś, co mogli używać tylko zapaleńcy. Oni naprawdę znają się na tym, co robią, ale żyją trochę w równoległym wszechświecie.

                                    W tym momencie pojawił się Paul "Rusty" Rusell i zrobił ipchains. Kod zupełnie ignorował to, co już było w kernelu i był od tego znacznie mniej wydajny. Plusem była przyjazność narzędzia dla adminów i dobra dokumentacja. No więc maintainer TCP/IP zgodził się to włączyć do głównej gałęzi jądra. No a potem była ewolucja i pojawił się Netfilter, korzystający z niego podsystem Xtables, a na jego bazie ip_tables (i narzędzie iptables) – również od Paula.

                                    Równolegle trwały prace nad usprawnieniem tego, co już w kernelu było przez ludzi dobrej woli, ale nie doczekali się włączenia ich projektów do mainstreamowego kernela, więc przestali się angażować. Na przykład TCNG: http://tcng.sourceforge.net/

                                    Autor nftables to bardziej ta frakcja starych wyjadaczy, chociaż jest związany z zespołem Netfiltera, a nftables to pierwsza taka zmiana, że ktoś się od nich znów bierze za firewalla i po latach ma szansę się jego narzędzie upowszechnić. No i dokumentacja jest na bieżąco dopisywana (a przynajmniej w porównaniu z u32 i tc o wiele szybciej).

                                    Na pewno nie tylko techniczne motywy decydują o tym, że ktoś chce, aby to właśnie jego pomysł się spopularyzował. Stąd na przykład takie pomysły jak Xtables2 robione równolegle. Selekcja naturalna sprawi, że ludzie sami wybiorą. Może stać się też tak, że na desktopach będzie jakaś nowa inkarnacja iptables, a w serwerowniach będą stały czarne skrzynki z nftables.

                                      zobacz więcej
                                      • Po odpowiednim ubarwieniu to byłby nawet niezły temat na artykuł (tzn. kulisy kuluarowe) ;p A takich smaczków jest przecież więcej (forki kernela, autorskie patche itd.).

                                        Jeśli chodzi o u32 i tc - yup. tzn. tc to jeszcze był szeroko stosowany i dość udokumentowany (tzn. pamiętam że jakoś 10 lat temu specjalnie nie marudziłem), ale u32 to faktycznie dramat. Był i jest. Bez tabelki tcpip od SANS nie ma sensu startować nawet w pomyślenie o próbie zrozumienia jak ugryźć...

                                        Anyway, chyba jednak nftables wyprą iptables, natomiast szeroko będą stosowane iptables-nftables i inne podobne narzędzia jako dwustronne parsery nftables dla mniej ogarniających temat...

                                        No to czekam również na 2 część, a potem 3 - bo 2 nie wyczerpie tematu... ;d

                                          • W nftables jest jeszcze warstwa kompatybilności z iptables, tzn. narzędzie, które ma identyczną składnię, ale tłumaczy to na reguły nftables i je wstawia. Problem z nim będzie taki, że pewnie większości dodatkowych modułów nie da się tak z marszu symulować (chociaż mogę się mylić).

                                            Do pisania kolejnych części wrócę, gdy tylko skończę o sekwencjach rozdział podręcznika programowania w języku Clojure, który popełniam od listopada ubiegłego roku w wolnych chwilach:

                                            https://randomseed.pl/pl/poczy...

                                    • Awatar

                                      Czekamy na część drugą

                                        • Awatar

                                          Jak zawsze artykuł na 17 stron po 6 miesiącach milczenia i do tego to tylko część 1... mamy co czytać na następne miesiące :)

                                          • Awatar

                                            Prawda jest taka, że sporej grupie ludzi nie chce się już czytać dużej ilości LITER.

                                              • Awatar

                                                10 dni i żadnego komentarza? jeden z lepszych artykułów - będzie część druga?